home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / APLVWORK.C < prev    next >
C/C++ Source or Header  |  1992-03-28  |  3KB  |  102 lines

  1. /**************************************************************************
  2.  * APLVWORK.C - apl_vopen() and apl_vclose() functions.
  3.  *************************************************************************/
  4.  
  5. #include <osbind.h>
  6. #include "gemfast.h"
  7.  
  8. #ifndef NULL
  9.   #define NULL 0L
  10. #endif
  11.  
  12. extern void     (*_AesVCleanup)();                      /* in APLXINIT.C */
  13. extern void     _ApXinit();                             /* in APLXINIT.C */
  14.  
  15. static int      work_in[11] = {
  16.     -1,                 /* device driver (filled in at runtime) */
  17.     1,                  /* polyline type    (normal)            */
  18.     1,                  /* polyline color   (black)             */
  19.     1,                  /* polymarker type  (dot)               */
  20.     1,                  /* polymarker color (black)             */
  21.     1,                  /* text face        (standard)          */
  22.     1,                  /* text color       (black)             */
  23.     1,                  /* fill interior    (solid)             */
  24.     8,                  /* fill style       (solid)             */
  25.     1,                  /* fill color       (black)             */
  26.     2                   /* use RC coordinate system             */
  27. }; 
  28.  
  29. static int      shared_handle = 0;    /* shared workstation handle       */
  30.  
  31. int gl_vwout[57];                     /* global work_out from v_opnvwk() */
  32. int gl_vxout[57];                     /* global work_out from vq_extnd() */
  33.  
  34. /*-------------------------------------------------------------------------
  35.  * apl_vclose - Close VDI virtual workstation.
  36.  *   if it's the shared workstation, don't really close it.
  37.  *-----------------------------------------------------------------------*/
  38.  
  39. void apl_vclose(vdi_handle)
  40.     register int vdi_handle;
  41. {
  42.     if (vdi_handle == shared_handle) {
  43.         return;
  44.     } else if (vdi_handle != 0) {
  45.         v_clsvwk(vdi_handle);
  46.     }
  47. }
  48.  
  49. /*-------------------------------------------------------------------------
  50.  * cleanup_shared_workstation() - Really close the shared workstation.
  51.  *  this is called from apl_cleanup() via the _AesVCleanup vector.
  52.  *-----------------------------------------------------------------------*/
  53.  
  54. static void cleanup_shared_workstation()
  55. {
  56.     if (shared_handle != 0) {
  57.         v_clsvwk(shared_handle);
  58.         shared_handle = 0;
  59.     }
  60. }
  61.  
  62. /*-------------------------------------------------------------------------
  63.  * apl_vopen() - Routine to open a virtual workstation.
  64.  *-----------------------------------------------------------------------*/
  65.  
  66. int apl_vopen()
  67. {
  68.     int vdi_handle;
  69.  
  70.     if (gl_grfhandle == 0) {
  71.         _ApXinit();
  72.     }
  73.  
  74.     if (work_in[0] == -1) {
  75.         work_in[0] = 2 + Getrez();  /* GDOS voodoo */
  76.     }
  77.     
  78.     vdi_handle = gl_grfhandle;
  79.     v_opnvwk(work_in, &vdi_handle, gl_vwout);
  80.     
  81.     if (gl_vxout[4] == 0 && vdi_handle != 0) {
  82.         vq_extnd(vdi_handle, 1, gl_vxout);
  83.     }
  84.     
  85.     return vdi_handle;
  86. }
  87.  
  88. /*-------------------------------------------------------------------------
  89.  * apl_vshared() - Return the handle to the shared workstation; open the
  90.  *                 shared workstation if necessary;
  91.  *-----------------------------------------------------------------------*/
  92.  
  93. int apl_vshared()
  94. {
  95.     if (shared_handle == 0) {
  96.         _AesVCleanup  = cleanup_shared_workstation;
  97.         shared_handle = apl_vopen();
  98.     }
  99.     return shared_handle;
  100. }
  101.  
  102.